SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_TASALD_EMPR_Q26]            
/*-------------------------------------------------------------------*/                
/*----- Empresa           : OFISIS S.A.                          ----*/                
/*----- Cliente           : OFISIS S.A.                          ----*/                
/*----- Sistema           : Contabilidad                         ----*/                
/*----- Modulo            : Empresa                              ----*/                
/*----- Programa          : Libro Inventarios y Balances - Resum ----*/                
/*----- Nombre            : SP_TASALD_EMPR_Q26                   ----*/                
/*----- Script            : TASALD_EMPR                          ----*/                
/*----- Desarrollado por  : Martin Garcia Farfan                 ----*/                
/*----- Fecha             : 30/04/2002                           ----*/                
/*----- Base de Datos     : MS SQL Server                        ----*/                
/*----- Version BD        : 8.0                                  ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 1 por  : Martin Garcia Farfan                 ----*/                
/*----- Fecha Modifica    : 09/05/2002                           ----*/                
/*----- Detalle Modifica  : Mostrar valores mayores o menores    ----*/                
/*-----                     a 0.5                                ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/                
/*----- Modificado 2 por  : LMGP                                 ----*/                
/*----- Fecha Modifica    : 12/08/2004                           ----*/                
/*----- Detalle Modifica  : Reporte con Filtros                  ----*/                
/*-------------------------------------------------------------------*/                
/*-------------------------------------------------------------------*/            
/*----- Modificado 3 por : PDGV                                  ----*/            
/*----- Fecha Modifica   : 13/01/2005                            ----*/            
/*----- Detalle Modifica :                                       ----*/            
-- CASO CTAS DE ORDEN----SI ES DEUDOR > 0 SE SUMA AL ACTIVO      
-- CASO CTAS DE ORDEN----SI ES ACREEDOR < 0 SE SUMA AL PASIVO      
/*-------------------------------------------------------------------*/                 
/*----- Drop proc SP_TASALD_EMPR_Q26                             ----*/                
/*----- Grant all on SP_TASALD_EMPR_Q26 to PUBLIC                ----*/                
/*----- SP_TASALD_EMPR_Q26 '01', 1, '', 2005, 1, 'T'                      ----*/   
-----  SE QUITO ESTE JOIN EN SELECT FINAL : And (t1.IM_MVTO_TOTA > 0.5 Or t1.IM_MVTO_TOTA < -0.5)                
/*-------------------------------------------------------------------*/                
@ISCO_EMPR       TD_VC_002,                
@INNU_CNTB_EMPR  TD_IN_001,         
@ISCO_UNID_CNTB  TD_VC_003,                         
@INNU_ANNO       TD_IN_004_ANNO,                
@INNU_MESE       TD_IN_002_MESE,                
@ISTI_INFO       TD_VC_001               
As  
-- Declaro Tabla Temporal                
Create Table #TWSALD_EMPR_Q26_1                
(NU_QUIE_0001     Int           NULL,                
 NU_QUIE_0002     Int           NULL,                
 DE_QUIE_0002     Varchar(50)   NULL,                
 CO_CNTA_QUIE     Varchar(20)   NULL,                
 DE_CNTA_QUIE     Varchar(50)   NULL,                
 CO_CNTA_EMPR     Varchar(20)   NULL,                
 DE_CNTA_EMPR     Varchar(50)   NULL,                
 IM_MVTO_TOTA     Numeric(16,4) NULL)                
                
-- Declaro Variables de Trabajo                
Declare                
@CSCO_CNTA_QUIE     TD_VC_020,                
@CSCO_CNTA_EMPR  TD_VC_020,                
@CSDE_CNTA_EMPR     TD_VC_050,                
@CNIM_MVTO_SALD     TD_NU_016_004,              @VNNU_QUIE_MINI     TD_IN_001,                
@VNNU_QUIE_MAXI     TD_IN_001,                
@VNIM_MVTO_ACTI     TD_NU_016_004,                
@VNIM_MVTO_PASI     TD_NU_016_004,                
@VNIM_MVTO_PATR     TD_NU_016_004,              
@VSCA_WHER_LOCA     TD_VC_255,            
@VNIM_CNTA_ORDE     TD_NU_016_004              
                
-- Inicializo Variables                
Select @CSCO_CNTA_QUIE = NULL                
Select @CSCO_CNTA_EMPR = NULL                
Select @CSDE_CNTA_EMPR = NULL                
Select @CNIM_MVTO_SALD = NULL                
Select @VNNU_QUIE_MAXI = 0                
Select @VNNU_QUIE_MAXI = 0                
Select @VNIM_MVTO_ACTI = 0                
Select @VNIM_MVTO_PASI = 0                
Select @VNIM_MVTO_PATR = 0                
Select @VNIM_CNTA_ORDE = 0                
                
-- Para obtener el mayor y el menor nivel de quiebre de la tabla de Parametros                
Select @VNNU_QUIE_MAXI = NV_INFO_CNTA,                
       @VNNU_QUIE_MINI = Convert(Integer, Substring(NV_QUIE_CNTA, 1, 2))                
   from TMPARA_CONT                
  Where CO_EMPR = @ISCO_EMPR                
        
If @ISTI_INFO = 'U'                 
  Select @VSCA_WHER_LOCA = ' And TASALD_EMPR.CO_UNID_CNTB = "' + @ISCO_UNID_CNTB + '" '                  
Else                 
  Select @VSCA_WHER_LOCA = ''            
                   
-- Declaro Cursor                
Exec(' Declare CU_TASALD_EMPR_Q26_1 Cursor                
 For                 
  Select Substring(TASALD_EMPR.CO_CNTA_EMPR, 1, 2), TASALD_EMPR.CO_CNTA_EMPR, Max(TMPLAN_EMPR.DE_CNTA_EMPR),              
         Sum(TASALD_EMPR.IM_CARG_CNTB) - Sum(TASALD_EMPR.IM_ABON_CNTB)              
  from TASALD_EMPR, TMPLAN_EMPR              
   Where TASALD_EMPR.CO_EMPR = "' + @ISCO_EMPR + '"              
     and TASALD_EMPR.NU_CNTB_EMPR = ' + @INNU_CNTB_EMPR + '              
     and TASALD_EMPR.NU_ANNO = ' + @INNU_ANNO + '              
     and TASALD_EMPR.NU_MESE <= ' + @INNU_MESE +                 
     @VSCA_WHER_LOCA + '                                  
     and Datalength(TASALD_EMPR.CO_CNTA_EMPR) = ' + @VNNU_QUIE_MAXI + '              
     and Substring(TASALD_EMPR.CO_CNTA_EMPR, 1, 2) < "60"                
     and TASALD_EMPR.TI_AUXI_EMPR IS NULL                
     and TASALD_EMPR.CO_AUXI_EMPR IS NULL                
     and TASALD_EMPR.CO_ORDE_SERV IS NULL                
     and TASALD_EMPR.CO_EMPR = TMPLAN_EMPR.CO_EMPR                
     and TASALD_EMPR.CO_CNTA_EMPR = TMPLAN_EMPR.CO_CNTA_EMPR                
     and TMPLAN_EMPR.NU_ANNO = 9999                
   Group by Substring(TASALD_EMPR.CO_CNTA_EMPR, 1, 2), TASALD_EMPR.CO_CNTA_EMPR                 
   Order by Substring(TASALD_EMPR.CO_CNTA_EMPR, 1, 2), TASALD_EMPR.CO_CNTA_EMPR   ')              
                
Open CU_TASALD_EMPR_Q26_1                
Fetch CU_TASALD_EMPR_Q26_1 into @CSCO_CNTA_QUIE, @CSCO_CNTA_EMPR,                 
       @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD                
                
While @@Fetch_status = 0                
 Begin                
          
  If SubString(@CSCO_CNTA_QUIE, 1, 1) = '0'          
   Begin                
    Insert into #TWSALD_EMPR_Q26_1                
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                 
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA)                
    Values(0, 1, Null, @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                 
       @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD)                
                
    -- Acumulo el total para los Activos                
    Select @VNIM_CNTA_ORDE = @VNIM_CNTA_ORDE + @CNIM_MVTO_SALD      
   End                
                
  -- Inserto los Activos como quiebre 1                   
  If SubString(@CSCO_CNTA_QUIE, 1, 1) > '0' And @CSCO_CNTA_QUIE < '40'              
   Begin                
    Insert into #TWSALD_EMPR_Q26_1                
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                 
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA)                
    Values(1, 1, 'ACTIVO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                 
       @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD)                
                
    -- Acumulo el total para los Activos                
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @CNIM_MVTO_SALD                
   End                
                
  -- Inserto los Pasivos como quiebre 2                
  If @CSCO_CNTA_QUIE > '39' and @CSCO_CNTA_QUIE < '50'                
   Begin                
    Insert into #TWSALD_EMPR_Q26_1                
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                 
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA)                
    Values(2, 1, 'PASIVO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                 
         @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD)                
                
   -- Acumulo el total para los Pasivos                
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @CNIM_MVTO_SALD                
   End                
                
  -- Inserto el Patrimonio como quiebre 3                
  If @CSCO_CNTA_QUIE > '49'                 
   Begin                
    Insert into #TWSALD_EMPR_Q26_1                
    (NU_QUIE_0001, NU_QUIE_0002, DE_QUIE_0002, CO_CNTA_QUIE, DE_CNTA_QUIE,                 
     CO_CNTA_EMPR, DE_CNTA_EMPR, IM_MVTO_TOTA)                
    Values(3, 1, 'PATRIMONIO', @CSCO_CNTA_QUIE, @CSDE_CNTA_EMPR, @CSCO_CNTA_EMPR,                 
        @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD)                
                
   -- Acumulo el total para el Patrimonio                
    Select @VNIM_MVTO_PATR = @VNIM_MVTO_PATR + @CNIM_MVTO_SALD                
   End                
                
   Fetch CU_TASALD_EMPR_Q26_1 into @CSCO_CNTA_QUIE, @CSCO_CNTA_EMPR,                 
     @CSDE_CNTA_EMPR, @CNIM_MVTO_SALD                
 End                
                
Close CU_TASALD_EMPR_Q26_1                
Deallocate CU_TASALD_EMPR_Q26_1               
      
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES DEUDOR (> 0) ENTONCES SE SUMA AL ACTIVO      
---- CASO SALDO DE LAS CUENTAS DE ORDEN ES ACREEDOR (< 0) ENTONCES SE SUMA AL PASIVO      
       
 If @VNIM_CNTA_ORDE > 0       
    Begin       
    Select @VNIM_MVTO_ACTI = @VNIM_MVTO_ACTI + @VNIM_CNTA_ORDE      
    End       
 If @VNIM_CNTA_ORDE < 0       
    Begin       
    Select @VNIM_MVTO_PASI = @VNIM_MVTO_PASI + @VNIM_CNTA_ORDE      
    End        
                
-- Select Final del Reporte                
 Select t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.DE_QUIE_0002, t1.CO_CNTA_QUIE, t2.DE_CNTA_EMPR,                 
        t1.CO_CNTA_EMPR, t1.DE_CNTA_EMPR, t1.IM_MVTO_TOTA, PAS_PATR = @VNIM_MVTO_PASI + @VNIM_MVTO_PATR,                
        ACTIVO = @VNIM_MVTO_ACTI, PASIVO = @VNIM_MVTO_PASI, PATRIMONIO = @VNIM_MVTO_PATR                 
  from #TWSALD_EMPR_Q26_1 t1  
 Left Outer Join TMPLAN_EMPR t2                
    On t2.CO_EMPR = @ISCO_EMPR                 
     And t2.CO_CNTA_EMPR = t1.CO_CNTA_QUIE  
   Where t1.IM_MVTO_TOTA != 0  
 Order by t1.NU_QUIE_0001, t1.NU_QUIE_0002, t1.CO_CNTA_QUIE, t1.CO_CNTA_EMPR                
                
Return                
/*----------------------------- Fin ---------------------------------*/  


GO
